验证器

    例如,这个验证器只允许偶数:

    你可以通过字段的validators参数将它添加到模型字段中:

    由于值在验证器运行之前会转化为Python,你可以在表单上使用相同的验证器:

    你也可以使用带有 __call__()方法的类,来实现更复杂或可配置的验证器。例如,就用了这种技巧。如果一个基于类的验证器用于validators模型字段的选项,你应该通过添加 和__eq__() 方法确保它可以被迁移框架序列化

    关于验证器如何在表单中运行,详见 。关于它们如何在模型中运行,详见 验证对象。要注意验证器不会在你保存模型时自动运行,但是如果你使用,它会在任何你表单包含的字段上运行你的验证器。关于模型验证器如何和表单交互,详见ModelForm 文档

    模块包含了一系列的可调用验证器,用于模型和表单字段。它们在内部使用,但是也可以用在你自己的字段上。它们可以用在field.clean() 方法之外,或者代替它。

    class RegexValidator([regex=None, message=None, code=None, inverse_match=None, flags=0])[source]

    Parameters:

    • regex – 如果不是None则覆写 。可以是一个正则表达式字符串,或者预编译的正则表达式对象。
    • message – 如果不是None,则覆写 message
    • code – 如果不是None,则覆写。
    • inverse_match – 如果不是None,则覆写inverse_match
    • flags – 如果不是None,则覆写 。这种情况下,regex ,必须是正则表达式字符串,否则抛出 异常。

    regex

    用于搜索提供的value的正则表达式,或者是预编译的正则表达式对象。通常在找不到匹配时抛出带有 message 和的 ValidationError异常。这一标准行为可以通过设置 为True来反转,这种情况下,如果找到匹配则抛出 ValidationError异常。通常它会匹配任何字符串(包括空字符串)。

    message

    验证失败时所使用的错误信息。默认为"Enter a valid value"

    code

    验证失败时ValidationError所使用的错误代码。默认为。

    inverse_match

    New in Django 1.7.

    的匹配模式。默认为False

    flags

    New in Django 1.7.

    编译正则表达式字符串regex时所用的标识。如果是预编译的正则表达式,并且覆写了flags,会产生异常。默认为 0

    EmailValidator

    class EmailValidator([message=None, code=None, whitelist=None])

    Parameters:

    • message – 如果不是 None,则覆写message
    • code – 如果不是 None,则覆写。

    验证失败时ValidationError所使用的错误信息。默认为"Enter a valid email address"

    code

    验证失败时所使用的错误代码。默认为"invalid"

    whitelist

    所允许的邮件域名的白名单。通常,正则表达式(domain_regex 属性) 用于验证 @ 符号后面的任何东西。但是,如果这个字符串在白名单里,就可以通过验证。如果没有提供,默认的白名单是 ['localhost']。其它不包含点符号的域名不能通过验证,所以你需要按需将它们添加进白名单。

    URLValidator

    class URLValidator([schemes=None, regex=None, message=None, code=None])

    RegexValidator确保一个值看起来像是URL,并且如果不是的话产生'invalid'错误代码。

    回送地址以及保留的IP空间被视为有效。同时也支持字面的IPv6地址 () 以及unicode域名。

    除了父类RegexValidator的可选参数之外,URLValidator接受一个额外的可选属性:

    schemes

    需要验证的URL/URI模式列表。如果没有提供,默认为 ['http', 'https', 'ftp', 'ftps']。IANA 网站提供了 的完整列表作为参考。

    Changed in Django 1.7:

    添加了可选的schemes 属性。

    Changed in Django 1.8:

    添加了对IPv6 地址, unicode 域名, 以及含有验证信息的URL的支持。

    validate_email

    validate_email

    一个不带有任何自定义的实例。

    一个 RegexValidator实例,确保值只含有字母、数字、下划线和连字符。

    validate_ipv4_address

    validate_ipv4_address

    一个RegexValidator的实例,确保值是IPv4地址。

    validate_ipv6_address

    validate_ipv6_address[source]

    validate_ipv46_address

    validate_ipv46_address[source]

    使用validate_ipv4_addressvalidate_ipv6_address 值是有效的 IPv4 或 IPv6 地址。

    validate_comma_separated_integer_list

    一个的实例,确保值是整数的逗号分隔列表。

    MaxValueValidator

    class MaxValueValidator(max_value, message=None)

    如果value 大于 max_value,抛出带有'max_value'代码的ValidationError 异常。

    Changed in Django 1.8:

    添加了message参数。

    MinValueValidator

    class MinValueValidator(min_value, message=None)[source]

    如果value小于min_value,抛出带有'min_value'代码的异常。

    Changed in Django 1.8:

    添加了message 参数。

    MaxLengthValidator

    class MaxLengthValidator(max_length, message=None)

    如果value的长度大于max_length,抛出带有'max_length'代码的ValidationError 异常。

    Changed in Django 1.8:

    添加了message参数。

    class MinLengthValidator(min_length, message=None)

    如果value的长度小于min_length,抛出带有'min_length'代码的ValidationError异常。

    Changed in Django 1.8:

    添加了message 参数。